} else if ( $wgRequest->wasPosted() && 'submit' == $action &&
$wgUser->matchEditToken( $wgRequest->getVal( 'wpEditToken' ) ) ) {
$ipb->doSubmit();
+ } else if ( $ipb->AlreadyBlocked ) {
+ $ipb->showForm( wfMsg('ipb_tweak_block', $ipb->BlockAddress ) );
} else {
- $ipb->showForm( '' );
+ $ipb->showForm('');
}
}
# var $BlockEmail;
function IPBlockForm( $par ) {
- global $wgRequest, $wgUser;
+ global $wgRequest, $wgUser, $wgLang;
$this->BlockAddress = $wgRequest->getVal( 'wpBlockAddress', $wgRequest->getVal( 'ip', $par ) );
$this->BlockAddress = strtr( $this->BlockAddress, '_', ' ' );
+ $this->AlreadyBlocked = false;
+
+ if( $this->BlockAddress && !$wgRequest->wasPosted() ){
+ $this->mBlock = new Block();
+ if( $this->mBlock->load($this->BlockAddress) && $this->BlockAddress == $this->mBlock->mAddress ) {
+ $this->AlreadyBlocked = true;
+ $this->BlockReason = wfMsgForContent( 'ipb_modifying_block' );
+ $this->BlockReasonList = $wgRequest->getText( 'wpBlockReasonList' );
+ $this->BlockExpiry = wfMsg('ipbotheroption');
+ $this->BlockOther = $wgLang->timeanddate( $this->mBlock->mExpiry );
+ $this->BlockAnonOnly = $wgRequest->getBool( 'wpAnonOnly', true );
+ $this->BlockCreateAccount = $wgRequest->getBool( 'wpCreateAccount', true );
+ $this->BlockEnableAutoblock = $wgRequest->getBool( 'wpEnableAutoblock', true );
+ $this->BlockEmail = $wgRequest->getBool( 'wpEmailBan', false );
+ $this->BlockEmail = $this->mBlock->mBlockEmail;
+ $this->BlockWatchUser = $wgRequest->getBool( 'wpWatchUser', false );
+ # Re-check user's rights to hide names, very serious, defaults to 0
+ $this->BlockHideName = ( $this->mBlock->mHideName && $wgUser->isAllowed( 'hideuser' ) ) ? 1 : 0;
+ return true;
+ }
+ }
+
$this->BlockReason = $wgRequest->getText( 'wpBlockReason' );
$this->BlockReasonList = $wgRequest->getText( 'wpBlockReasonList' );
$this->BlockExpiry = $wgRequest->getVal( 'wpBlockExpiry', wfMsg('ipbotheroption') );
}
function showForm( $err ) {
- global $wgOut, $wgUser, $wgSysopUserBans;
+ global $wgOut, $wgUser, $wgSysopUserBans, $wgRequest;
$wgOut->setPagetitle( wfMsg( 'blockip' ) );
$wgOut->addWikiMsg( 'blockiptext' );
$titleObj = SpecialPage::getTitleFor( 'Blockip' );
- if ( "" != $err ) {
+ if ( $wgRequest->wasPosted() ) {
$wgOut->setSubtitle( wfMsgHtml( 'formerror' ) );
+ }
+ if ( "" != $err ) {
$wgOut->addHTML( Xml::tags( 'p', array( 'class' => 'error' ), $err ) );
}
if ( wfRunHooks('BlockIp', array(&$block, &$wgUser)) ) {
if ( !$block->insert() ) {
- return array('ipb_already_blocked', htmlspecialchars($this->BlockAddress));
+ // Block already exists. Silently delete the existing block and insert it again
+ $oldblock = Block::newFromDB( $this->BlockAddress );
+ $oldblock->delete();
+ $block->insert();
}
wfRunHooks('BlockIpComplete', array($block, $wgUser));
'ipb_expiry_invalid' => 'Expiry time invalid.',
'ipb_expiry_temp' => 'Hidden username blocks should be permanent.',
'ipb_already_blocked' => '"$1" is already blocked',
+'ipb_modifying_block' => 'Modifying existing block:',
+'ipb_tweak_block' => 'Caution: This user ($1) is already blocked.
+You can use this form to change the block settings.',
'ipb_cant_unblock' => 'Error: Block ID $1 not found. It may have been unblocked already.',
'ipb_blocked_as_range' => 'Error: The IP $1 is not blocked directly and cannot be unblocked.
It is, however, blocked as part of the range $2, which can be unblocked.',